home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 94 / CD-ROM 94.iso / util / weban / setup.msi / Cabs.w23.cab / copyreport.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-07-24  |  16.8 KB  |  487 lines

  1. <?xml version="1.0"?> 
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  
  4.     <xsl:variable name="ScoreLookup">
  5.       <c score="0" url="Graphics/dash.gif" alttext="Check Not Performed"/>
  6.       <c score="1" url="Graphics/excl_red.gif" alttext="Unable to scan"/>
  7.       <c score="2" url="Graphics/x_red.gif" alttext="Check failed (critical)"/>
  8.       <c score="3" url="Graphics/x_gold.gif" alttext="Check failed (non-critical)"/>
  9.       <c score="4" url="Graphics/astrx.gif" alttext="Best practice"/>
  10.       <c score="5" url="Graphics/chek_grn.gif" alttext="Check passed"/>
  11.       <c score="6" url="Graphics/dash.gif" alttext="Check not performed"/>
  12.       <c score="7" url="Graphics/info.gif" alttext="Additional information"/>
  13.     </xsl:variable>
  14.     
  15.     <xsl:variable name="Assessment">
  16.       <c score="1" text="Incomplete Scan" longtext="Could not complete one or more requested checks."/>
  17.       <c score="2" text="Severe Risk" longtext="One or more critical checks failed."/>
  18.       <c score="3" text="Potential Risk" longtext="One or more non-critical checks failed."/>
  19.       <c score="4" text="Security FYIs" longtext=""/>
  20.       <c score="5" text="Strong Security" longtext="All checks were passed."/>
  21.     </xsl:variable>
  22.  
  23.     <xsl:variable name="FileName" select="'file name here'"></xsl:variable>
  24.     
  25.         <xsl:template match="SecScan">
  26.             <xsl:param name="assess" select="@Grade"/>
  27.             <head>
  28.                 <link REL="stylesheet" type="text/css" href="css/scanner.css" />
  29.             </head>
  30.             <table>
  31.             <tr>
  32.                 <td class="reportsubheader" width="140"><b>Computer name:</b></td>
  33.                 <td><xsl:value-of select="@Domain"/>\<xsl:value-of select="@Machine"/></td>
  34.             </tr>
  35.             <tr>
  36.                 <td class="reportsubheader" width="140"><b>IP address:</b></td>
  37.                 <td><xsl:value-of select="@IP"/></td>
  38.             </tr>
  39.             <tr>
  40.                 <td class="reportsubheader" width="140"><b>Security report name:</b></td>
  41.                 <td><xsl:value-of select="$FileName" /></td>
  42.             </tr>
  43.             <tr>
  44.                 <td class="reportsubheader" width="140"><b>Scan date:</b></td>
  45.                  <xsl:choose>
  46.                   <xsl:when test="@LDate">
  47.                     <td><xsl:value-of select="@LDate"/></td>
  48.                   </xsl:when>
  49.                   <xsl:otherwise>
  50.                     <td><xsl:value-of select="@Date"/></td>
  51.                   </xsl:otherwise>
  52.                 </xsl:choose>        
  53.             </tr>
  54.             <xsl:choose>
  55.             <xsl:when test="@HotfixDataVersion">
  56.                   <tr>
  57.                     <td class="reportsubheader" width="140"><b>Security Update database version:</b></td>
  58.                     <td><xsl:value-of select="@HotfixDataVersion"/></td>
  59.                 </tr>
  60.             </xsl:when>
  61.             </xsl:choose>    
  62.             <tr>
  63.                 <td class="reportsubheader" width="140"><b>Security assessment:</b></td>
  64.                 <td><xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@text"/><xsl:text> </xsl:text>(<xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@longtext"/>)</td>
  65.             </tr>
  66.             
  67.             <xsl:choose>
  68.             <xsl:when test="Check[@ID='125']">
  69.                 <tr>
  70.                     <td colspan="2" class="reportsubheader">
  71.                         <br />
  72.                         This computer is running Windows .NET Server. This version of Windows is not officially supported in this release.
  73.                         <br />
  74.                     </td>
  75.                 </tr>    
  76.             </xsl:when>
  77.             </xsl:choose>
  78.             
  79.             </table>
  80.             
  81.             <xsl:choose>
  82.             <xsl:when test="Check[@Type='5']">
  83.                 <br />
  84.                 <div class="reportheader"><b>Security Updates</b></div>
  85.                 <xsl:choose>
  86.                 <xsl:when test="Check[@Type='5'][@Cat='1']">
  87.                     <br />
  88.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  89.                         <tr class="ReportListHeader">
  90.                             <td style="WIDTH:40" align="center">Score</td>
  91.                             <td style="WIDTH:40" align="left">Issue</td>
  92.                             <td>Result</td>
  93.                         </tr>
  94.                         <xsl:for-each select=".">
  95.                             <xsl:apply-templates select="Check[@Type='5'][@Cat='1']">
  96.                                 <xsl:sort order="sortorder" select="sortfield"/>
  97.                                 <xsl:sort select="@Rank"/>
  98.                             </xsl:apply-templates>
  99.                         </xsl:for-each>
  100.                     </table>
  101.                 </xsl:when>
  102.                 </xsl:choose>
  103.             </xsl:when>
  104.             </xsl:choose>
  105.             
  106.             <xsl:choose>
  107.             <xsl:when test="Check[@Type='1']">
  108.                 <br />
  109.                 <div class="reportheader"><b>Windows Scan Results</b></div>
  110.                 <xsl:choose>
  111.                 <xsl:when test="Check[@Type='1'][@Cat='1']">
  112.                     <br />
  113.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  114.                     <br />
  115.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  116.                         <tr class="ReportListHeader">
  117.                             <td style="WIDTH:40" align="center">Score</td>
  118.                             <td style="WIDTH:40" align="left">Issue</td>
  119.                             <td>Result</td>
  120.                         </tr>
  121.                         <xsl:for-each select=".">
  122.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='1']">
  123.                                 <xsl:sort order="sortorder" select="sortfield"/>
  124.                                 <xsl:sort select="@Rank"/>
  125.                             </xsl:apply-templates>
  126.                         </xsl:for-each>
  127.                     </table>            
  128.                 </xsl:when>
  129.                 </xsl:choose>
  130.                 <xsl:choose>
  131.                 <xsl:when test="Check[@Type='1'][@Cat='2']">
  132.                     <br />
  133.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  134.                     <br />
  135.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  136.                         <tr class="ReportListHeader">
  137.                             <td style="WIDTH:40" align="center">Score</td>
  138.                             <td style="WIDTH:40" align="left">Issue</td>
  139.                             <td>Result</td>
  140.                         </tr>
  141.                         <xsl:for-each select=".">
  142.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='2']">
  143.                                 <xsl:sort order="sortorder" select="sortfield"/>
  144.                                 <xsl:sort select="@Rank"/>
  145.                             </xsl:apply-templates>
  146.                         </xsl:for-each>
  147.                     </table>
  148.                 </xsl:when>
  149.                 </xsl:choose>
  150.             </xsl:when>
  151.             </xsl:choose>
  152.  
  153.             <xsl:choose>
  154.             <xsl:when test="Check[@Type='3']">    
  155.                 <br />
  156.                 <div class="reportheader"><b>Internet Information Services (IIS) Scan Results</b></div>
  157.                 <xsl:choose>
  158.                 <xsl:when test="Check[@Type='3'][@Cat='1']">
  159.                     <br />
  160.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  161.                     <br />
  162.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  163.                         <tr class="ReportListHeader">
  164.                             <td style="WIDTH:40" align="center">Score</td>
  165.                             <td style="WIDTH:40" align="left">Issue</td>
  166.                             <td>Result</td>
  167.                         </tr>
  168.                         <xsl:for-each select=".">
  169.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='1']">
  170.                                 <xsl:sort order="sortorder" select="sortfield"/>
  171.                                 <xsl:sort select="@Rank"/>
  172.                             </xsl:apply-templates>
  173.                         </xsl:for-each>
  174.                     </table>            
  175.                 </xsl:when>
  176.                 </xsl:choose>
  177.                 <xsl:choose>
  178.                 <xsl:when test="Check[@Type='3'][@Cat='2']">
  179.                     <br />
  180.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  181.                     <br />
  182.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  183.                         <tr class="ReportListHeader">
  184.                             <td style="WIDTH:40" align="center">Score</td>
  185.                             <td style="WIDTH:40" align="left">Issue</td>
  186.                             <td>Result</td>
  187.                         </tr>
  188.                         <xsl:for-each select=".">
  189.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='2']">
  190.                                 <xsl:sort order="sortorder" select="sortfield"/>
  191.                                 <xsl:sort select="@Rank"/>
  192.                             </xsl:apply-templates>
  193.                         </xsl:for-each>
  194.                     </table>
  195.                 </xsl:when>
  196.                 </xsl:choose>
  197.                 <xsl:choose>
  198.                 <xsl:when test="Check[@Type='3'][@Cat='4']">
  199.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  200.                         <tr class="ReportListHeader">
  201.                             <td style="WIDTH:40" align="center">Score</td>
  202.                             <td style="WIDTH:40" align="left">Issue</td>
  203.                             <td>Result</td>
  204.                         </tr>
  205.                         <xsl:for-each select=".">
  206.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='4']">
  207.                                 <xsl:sort order="sortorder" select="sortfield"/>
  208.                                 <xsl:sort select="@Rank"/>
  209.                             </xsl:apply-templates>
  210.                         </xsl:for-each>
  211.                     </table>
  212.                 </xsl:when>
  213.                 </xsl:choose>
  214.             </xsl:when>
  215.             </xsl:choose>
  216.             
  217.             <!-- One tag per SQL Instance, MBSA V1.1 and later -->
  218.             <xsl:choose>
  219.                 <xsl:when test="SQLInstance">
  220.                     <xsl:for-each select=".">
  221.                         <xsl:apply-templates select="SQLInstance"/>
  222.                     </xsl:for-each>
  223.                 </xsl:when>
  224.             </xsl:choose>
  225.  
  226.             <xsl:choose>
  227.             <xsl:when test="Check[@Type='2']">    
  228.                 <br />
  229.                 <div class="reportheader"><b>SQL Server Scan Results</b></div>
  230.                 <xsl:choose>
  231.                 <xsl:when test="Check[@Type='2'][@Cat='1']">
  232.                     <br />
  233.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  234.                     <br />
  235.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  236.                         <tr class="ReportListHeader">
  237.                             <td style="WIDTH:40" align="center">Score</td>
  238.                             <td style="WIDTH:40" align="left">Issue</td>
  239.                             <td>Result</td>
  240.                         </tr>
  241.                         <xsl:for-each select=".">
  242.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  243.                                 <xsl:sort order="sortorder" select="sortfield"/>
  244.                                 <xsl:sort select="@Rank"/>
  245.                             </xsl:apply-templates>
  246.                         </xsl:for-each>
  247.                     </table>            
  248.                 </xsl:when>
  249.                 </xsl:choose>
  250.                 <xsl:choose>
  251.                 <xsl:when test="Check[@Type='2'][@Cat='2']">
  252.                     <br />
  253.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  254.                     <br />
  255.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  256.                         <tr class="ReportListHeader">
  257.                             <td style="WIDTH:40" align="center">Score</td>
  258.                             <td style="WIDTH:40" align="left">Issue</td>
  259.                             <td>Result</td>
  260.                         </tr>
  261.                         <xsl:for-each select=".">
  262.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  263.                                 <xsl:sort order="sortorder" select="sortfield"/>
  264.                                 <xsl:sort select="@Rank"/>
  265.                             </xsl:apply-templates>
  266.                         </xsl:for-each>
  267.                     </table>
  268.                 </xsl:when>
  269.                 </xsl:choose>
  270.                 <xsl:choose>
  271.                 <xsl:when test="Check[@Type='2'][@Cat='4']">
  272.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  273.                         <tr class="ReportListHeader">
  274.                             <td style="WIDTH:40" align="center">Score</td>
  275.                             <td style="WIDTH:40" align="left">Issue</td>
  276.                             <td>Result</td>
  277.                         </tr>
  278.                         <xsl:for-each select=".">
  279.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  280.                                 <xsl:sort order="sortorder" select="sortfield"/>
  281.                                 <xsl:sort select="@Rank"/>
  282.                             </xsl:apply-templates>
  283.                         </xsl:for-each>
  284.                     </table>
  285.                 </xsl:when>
  286.                 </xsl:choose>
  287.             </xsl:when>
  288.             </xsl:choose>
  289.             
  290.             <xsl:choose>
  291.             <xsl:when test="Check[@Type='4']">    
  292.                 <br />
  293.                 <div class="reportheader"><b>Desktop Application Scan Results</b></div>
  294.                 <xsl:choose>
  295.                 <xsl:when test="Check[@Type='4'][@Cat='1']">
  296.                     <br />
  297.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  298.                     <br />
  299.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  300.                         <tr class="ReportListHeader">
  301.                             <td style="WIDTH:40" align="center">Score</td>
  302.                             <td style="WIDTH:40" align="left">Issue</td>
  303.                             <td>Result</td>
  304.                         </tr>
  305.                         <xsl:for-each select=".">
  306.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='1']">
  307.                                 <xsl:sort order="sortorder" select="sortfield"/>
  308.                                 <xsl:sort select="@Rank"/>
  309.                             </xsl:apply-templates>
  310.                         </xsl:for-each>
  311.                     </table>            
  312.                 </xsl:when>
  313.                 </xsl:choose>
  314.                 <xsl:choose>
  315.                 <xsl:when test="Check[@Type='4'][@Cat='2']">
  316.                     <br />
  317.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  318.                     <br />
  319.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  320.                         <tr class="ReportListHeader">
  321.                             <td style="WIDTH:40" align="center">Score</td>
  322.                             <td style="WIDTH:40" align="left">Issue</td>
  323.                             <td>Result</td>
  324.                         </tr>
  325.                         <xsl:for-each select=".">
  326.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='2']">
  327.                                 <xsl:sort order="sortorder" select="sortfield"/>
  328.                                 <xsl:sort select="@Rank"/>
  329.                             </xsl:apply-templates>
  330.                         </xsl:for-each>
  331.                     </table>
  332.                 </xsl:when>
  333.                 </xsl:choose>
  334.             </xsl:when>
  335.             </xsl:choose>
  336.         <!--EndFragment -->
  337.         </xsl:template>
  338.     
  339.     <xsl:template match="Check">
  340.         <xsl:param name="score" select="@Grade"/>
  341.             <xsl:variable name="bgcolor">
  342.             <xsl:choose>
  343.                 <xsl:when test="(position() mod 2) = 1">#8caae6</xsl:when>
  344.                 <xsl:otherwise>#CECFF6</xsl:otherwise>
  345.             </xsl:choose>
  346.             </xsl:variable>
  347.             <tr bgcolor="{$bgcolor}">
  348.                 <td align="center" valign="top">
  349.                     <xsl:choose>
  350.                       <xsl:when test="@Cat='2'">
  351.                         <xsl:choose>
  352.                           <xsl:when test="@ID='121'">
  353.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  354.                           </xsl:when>
  355.                           <xsl:when test="@ID='10121'">
  356.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  357.                           </xsl:when>
  358.                           <xsl:when test="@ID='101'">
  359.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  360.                            </xsl:when>
  361.                           <xsl:when test="@ID='10101'">
  362.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  363.                            </xsl:when>
  364.                           <xsl:otherwise>
  365.                            <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@alttext"/>
  366.                           </xsl:otherwise>
  367.                         </xsl:choose>
  368.                       </xsl:when>
  369.                       <xsl:otherwise>
  370.                          <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext" />
  371.                       </xsl:otherwise>
  372.                     </xsl:choose>    
  373.                 </td>
  374.                 <td style="WIDTH:75" align="left" valign="top"><xsl:value-of select="@Name"/></td>
  375.                 <td> 
  376.                     <TABLE width="100%">  
  377.                       <TR>
  378.                         <TD align="left" colspan="3"><xsl:value-of select="Advice"/></TD>
  379.                       </TR>
  380.                         <xsl:choose>
  381.                           <xsl:when test="Detail">
  382.                             <TR>
  383.                             <TD>
  384.                             <table width="100%" border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px; padding-right: 10px;">
  385.                                 <tr class="ReportListHeader">
  386.                                     <xsl:for-each select="Detail/Head/Col">
  387.                                         <td Nowrap="true">
  388.                                         <B><xsl:value-of select="."/></B>
  389.                                         </td>
  390.                                     </xsl:for-each>
  391.                                 </tr>
  392.                                 <xsl:for-each select="Detail">
  393.                                     <xsl:apply-templates select="Row">
  394.                                     </xsl:apply-templates>
  395.                                 </xsl:for-each>
  396.                             </table>
  397.                             </TD>
  398.                             </TR>
  399.                           </xsl:when>
  400.                         </xsl:choose>    
  401.                     </TABLE>
  402.                 </td>
  403.             </tr>
  404.     </xsl:template>
  405.     
  406.     <xsl:template match="Row">
  407.         <xsl:param name="score" select="@Grade"/>
  408.             <tr>
  409.                 <xsl:for-each select="Col">
  410.                 <td valign="top">
  411.                  <xsl:choose>
  412.                   <xsl:when test="@URL">
  413.                     <A href="{@URL}"><xsl:value-of select="."/></A>
  414.                   </xsl:when>
  415.                   <xsl:otherwise>
  416.                     <xsl:value-of select="."/>
  417.                   </xsl:otherwise>
  418.                 </xsl:choose>    
  419.                 </td>
  420.                 </xsl:for-each>
  421.             </tr>
  422.     </xsl:template>
  423.  
  424.     <!-- SQL Instance section -->
  425.     <xsl:template match="SQLInstance">
  426.         <br />
  427.         <div class="reportheader"><b>SQL Server Scan Results: Instance <xsl:value-of select="@Name"/></b></div>
  428.         <xsl:choose>
  429.         <xsl:when test="Check[@Type='2'][@Cat='1']">
  430.             <br />
  431.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  432.             <br />
  433.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  434.                 <tr class="ReportListHeader">
  435.                     <td style="WIDTH:40" align="center">Score</td>
  436.                     <td style="WIDTH:40" align="left">Issue</td>
  437.                     <td>Result</td>
  438.                 </tr>
  439.                 <xsl:for-each select=".">
  440.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  441.                         <xsl:sort order="sortorder" select="sortfield"/>
  442.                         <xsl:sort select="@Rank"/>
  443.                     </xsl:apply-templates>
  444.                 </xsl:for-each>
  445.             </table>            
  446.         </xsl:when>
  447.         </xsl:choose>
  448.         <xsl:choose>
  449.         <xsl:when test="Check[@Type='2'][@Cat='2']">
  450.             <br />
  451.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  452.             <br />
  453.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  454.                 <tr class="ReportListHeader">
  455.                     <td style="WIDTH:40" align="center">Score</td>
  456.                     <td style="WIDTH:40" align="left">Issue</td>
  457.                     <td>Result</td>
  458.                 </tr>
  459.                 <xsl:for-each select=".">
  460.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  461.                         <xsl:sort order="sortorder" select="sortfield"/>
  462.                         <xsl:sort select="@Rank"/>
  463.                     </xsl:apply-templates>
  464.                 </xsl:for-each>
  465.             </table>
  466.         </xsl:when>
  467.         </xsl:choose>
  468.         <xsl:choose>
  469.         <xsl:when test="Check[@Type='2'][@Cat='4']">
  470.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  471.                 <tr class="ReportListHeader">
  472.                     <td style="WIDTH:40" align="center">Score</td>
  473.                     <td style="WIDTH:40" align="left">Issue</td>
  474.                     <td>Result</td>
  475.                 </tr>
  476.                 <xsl:for-each select=".">
  477.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  478.                         <xsl:sort order="sortorder" select="sortfield"/>
  479.                         <xsl:sort select="@Rank"/>
  480.                     </xsl:apply-templates>
  481.                 </xsl:for-each>
  482.             </table>
  483.         </xsl:when>
  484.         </xsl:choose>
  485.     </xsl:template>
  486.  
  487. </xsl:stylesheet>